# 变量作用域

# 同一个作用域，变量名唯一
# python作用域氛围  内置作用域》文件作用域》函数嵌套作用域》本地作用域
# 内置作用域、文件作用域   定义全局变量
# 函数嵌套作用域、本地作用域     定义本地变量
# 变量名相同时，范围小的作用域变量优先

a=10
def show():
    print(a)        #本地没有a，所以用了全局的
show()      #10

a=10
def show():
    a=100           #本地变量a
    print(a)
show()      #100

a=10
def show():
    print(a)        #a在此时只能被当成内部变量
    a=100
    print(a)
show()      #报错 local variable 'a' referenced before assignment

a=10
def show():
    global a        #a在此时被当成全局变量
    print(a)
    a=100
    print(a)
show()
a                   #100被修改成100


def test():
    a=10
    def show():
        nonlocal a  #声明a引用了test函数的本地变量a
        a=100
        print(a)
    show()
    print(a)
test()